Video game applications traditionally undergo a variety of testing to determine whether the game is functional (e.g., substantially free of bugs) and/or entertaining. Software such as a game may undergo various stages of release, both internally and externally, such as an alpha and beta release. Beta testing may refer to a limited release to external users. The users may report back to the maker of the software any bugs that are discovered and/or provide feedback on the quality of various aspects of the software. The software maker may fix the bugs and/or alter functionality of the software to emphasize those features which testers felt were successful. This process can be time consuming and may not be predictive about the quality of the software.
In game development in particular, quality assurance can be difficult because users may play the game in ways that are unexpected or difficult to predict. Unexpected behavior may, therefore, make use of standard software engineering techniques less reliable. One way game developers attempt to test a game application is by engaging a quality assurance company that may test the software. Another option employed by game developers is fuzz testing, where random inputs are generated in the hope that the inputs will test portions of the software that human testers may not stumble upon. Another option is to write a custom artificial intelligence (“AI”) for the game (e.g., a bot). The AI may have coverage issues, however, because it will only find portions of the game that it has been coded to find or test.